class GBTree[A, B] {
    abstract class Tree[A,B];
    case class Node[A,B](key:A,value:B,smaller:Node[A,B],bigger:Node[A,B])
    extends Tree[A,B];
    case class Nil[A,B]() extends Tree[A,B];

}
